<?php if (!defined('BASEPATH'))exit('No direct script access allowed');

class Absensi_siswa extends CI_Controller
{
    function __construct() {
        parent::__construct();
    }
    
    public function index()
    {
        $data['select_tahun'] = $this->db->from('tahun')->order_by('id_tahun', 'ASC')->get();
        $data['id_tahun'] = $this->db->select('id_tahun')->from('tahun')->where('tahun_aktif', '1')->get()->row()->id_tahun;
        $this->template->admin('admin/v_absensi', $data, 4, 'Absensi Siswa');
    }
    
    public function download_format()
    {
        $id_tahun = $this->encrypt->decode($this->input->get('id_tahun'));
        $id_kelas = $this->encrypt->decode($this->input->get('id_kelas'));
        $tanggal_ = date_database2($this->input->get('txt_tanggal'));
        if($id_tahun != '' && $id_kelas != '' && $tanggal_ != '')
        {
            $data['r_absen'] = $this->db->query('SELECT ab.id AS id_absen, t.id_tahun, ds.id AS id_siswa, dk.id_kelas, t.tahun_angkatan, dk.nama_kelas, dg.nama_guru, ds.nomor_induk, ds.nama_siswa, ab.status FROM data_siswa ds
INNER JOIN siswa_kelas sk ON(sk.id_siswa=ds.id)
INNER JOIN data_kelas dk ON(dk.id_kelas=sk.id_kelas AND dk.id_tahun=sk.id_tahun)
INNER JOIN kelas_stat ks ON(ks.id_kelstat=dk.id_kelstat)
INNER JOIN tahun t ON(t.id_tahun=dk.id_tahun)
LEFT JOIN absensi_siswa ab ON(ab.id_siswa=ds.id AND ab.id_tahun=dk.id_tahun AND ab.tanggal = \''.$tanggal_.'\')
LEFT JOIN data_wali dw ON(dw.kode_kelas=dk.id_kelas)
LEFT JOIN data_guru dg ON(dg.id=dw.kode_guru)
WHERE dk.id_tahun = '.$id_tahun.'
AND dk.id_kelas = '.$id_kelas.'
GROUP BY ds.id
ORDER BY ds.nomor_induk ASC, ds.nama_siswa ASC');
            if($data['r_absen']->num_rows() > 0)
            {
                $data['tanggal'] = $tanggal_;
                $file = 'Format Absensi Tanggal '.$tanggal_.' Kelas '.$data['r_absen']->row()->nama_kelas.' T.A '.$data['r_absen']->row()->tahun_angkatan;
                $file .= '.xls';
                header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
                header("Content-Disposition: attachment; filename=".$file);
        //        header("Content-Transfer-Encoding: binary");
        //        header("Pragma: public");
        //        header("Expires: 0");
                header('Cache-Control: max-age=0');
                $this->load->view('home/f_absensi_siswa', $data);
            }
            else
            {
                show_404();
            }
        }
        else
        {
            show_404();
        }
    }
    
    
    public function upload_absensi()
    {
        $this->load->library('excel_reader');
        $data = new excel_reader($_FILES['file_excel']['tmp_name']);
        
        $baris = $data->rowcount($sheet_index=0);
        $kode_tahun = $data->val(1, 3);
        $tanggal = date_database2($data->val(2, 3));
        $kode_kelas = $data->val(3, 3);
        
        $r_absen = $this->db->query('SELECT ab.id AS id_absen, t.id_tahun, ds.id AS id_siswa, dk.id_kelas, t.tahun_angkatan, dk.nama_kelas, dg.nama_guru, ds.nomor_induk, ds.nama_siswa, ab.status, ab.tanggal FROM data_siswa ds
INNER JOIN siswa_kelas sk ON(sk.id_siswa=ds.id)
INNER JOIN data_kelas dk ON(dk.id_kelas=sk.id_kelas AND dk.id_tahun=sk.id_tahun)
INNER JOIN kelas_stat ks ON(ks.id_kelstat=dk.id_kelstat)
INNER JOIN tahun t ON(t.id_tahun=dk.id_tahun)
INNER JOIN absensi_siswa ab ON(ab.id_siswa=ds.id AND ab.id_tahun=dk.id_tahun AND ab.tanggal = \''.$tanggal.'\')
LEFT JOIN data_wali dw ON(dw.kode_kelas=dk.id_kelas)
LEFT JOIN data_guru dg ON(dg.id=dw.kode_guru)
WHERE dk.id_tahun = '.$kode_tahun.'
AND dk.id_kelas = '.$kode_kelas.'
GROUP BY ds.id
ORDER BY ds.nomor_induk ASC, ds.nama_siswa ASC');
        
        $data_tambah = array();
        $data_update = array();
        $j = 0;
        $ju = 0;
        for ($i=8; $i<=$baris; $i++)
        {
            $id_siswa = $data->val($i, 2);
            $status_h = $data->val($i, 5);
            switch ($status_h)
            {
                case "X":
                    $status_kehadiran = "0";
                    break;
                case "H":
                    $status_kehadiran = "1";
                    break;
                case "I":
                    $status_kehadiran = "2";
                    break;
                case "S":
                    $status_kehadiran = "3";
                    break;
                case "x":
                    $status_kehadiran = "0";
                    break;
                case "h":
                    $status_kehadiran = "1";
                    break;
                case "i":
                    $status_kehadiran = "2";
                    break;
                case "s":
                    $status_kehadiran = "3";
                    break;
                default :
                    $tambah = false;
                    break;
            }
            $tambah = true;
            if($r_absen->num_rows() > 0)
            {
                foreach ($r_absen->result() as $v_absen)
                {
                    if($v_absen->id_tahun == $kode_tahun && $v_absen->tanggal == $tanggal && $v_absen->id_siswa == $id_siswa)
                    {
                        if($status_h == '')
                            $status_kehadiran = NULL;
                        $data_update[$ju] = array(
                            'id' => $v_absen->id_absen,
                            'status' => $status_kehadiran
                        );
                        $ju++;
                        $tambah = false;
                    }
                }
            }
            
            if($tambah == true)
            {
                if($status_h != '')
                {
                    $data_tambah[$j] = array(
                        'id_tahun' => $kode_tahun,
                        'tanggal' => $tanggal,
                        'id_siswa' => $id_siswa,
                        'status' => $status_kehadiran,
                    );
                    $j++;
                }
            }
            
        }
//        print_r($data_update);
//        print_r($data_tambah);
        if(count($data_tambah) > 0)
            $this->db->insert_batch ('absensi_siswa', $data_tambah);
        if(count($data_update) > 0)
            $this->db->update_batch ('absensi_siswa', $data_update, 'id');
        redirect('admin/absensi_siswa');
    }
}


/* End of file absensi_siswa.php */
/* Location: ./application/controllers/admin/absensi_siswa.php */